import {initMinxin} from './core/instance/render-helpers/init'
import {renderMixin} from './core/instance/render-helpers/render'
import {lifeCycleMixin} from './core/instance/render-helpers/lifecycle'
import {initGlobalAPI} from './core/global-api'
import {compileToFunction} from './compiler/compiler'
import {patch, createElm} from './core/vdom/patch'

function Vue(options) {
  //vue初始化流程
  this._init(options)
}
initMinxin(Vue)
renderMixin(Vue)
lifeCycleMixin(Vue)
initGlobalAPI(Vue)

// diff test
// const vm1 = new Vue({
//   data() {
//     return {
//       name: 'xys'
//     }
//   }
// })
// let render1 = compileToFunction(`<div style="background:peachpuff;color: pink">
// <ul>
// <li key="a" style="color: red">a</li>
// <li key="b" style="color: pink">b</li>
// <li key="c" style="color: aqua">c</li>
// <li key="d" style="color: blueviolet">d</li>
// </ul>
// </div>`)
// let oldNode = render1.call(vm1)
// let el1 = createElm(oldNode)
// document.body.appendChild(el1)
//
// const vm2 = new Vue({
//   data() {
//     return {
//       name: 'hf'
//     }
//   }
// })
// let render2 = compileToFunction(`<div style="color: red;background:peachpuff;"><ul>
// <li key="b" style="color: pink">b</li>
// <li key="c" style="color: aqua">c</li>
// <li key="d" style="color: blueviolet">d</li>
// <li key="a" style="color: red">a</li>
// </ul></div>`)
// let newNode = render2.call(vm2)
// setTimeout(() => {
//   patch(oldNode, newNode)
// }, 3000)
export default Vue
